package cn.itmantzy.basic.controller;

import cn.itmantzy.basic.util.AjaxResult;
import cn.itmantzy.basic.util.FastDfsUtil;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * 文件上传接口
 */
@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    /**
     *  文件上传
     *  @RequestPart 专门用来进行文件上传
     *  required 这个参数必须传，这样前端才能够将参数传过来
     *  value 这个参数就是前端传过来的参数
     */
    @PostMapping("/upload")
    public AjaxResult upload(@RequestPart(required = true, value = "file") MultipartFile file){
        try {
            // 获取文件全名(为了获取文件的拓展名)
            String filename = file.getOriginalFilename(); // 105.jpg
            // 这里获取的就是jpg
            String extName = filename.substring(filename.lastIndexOf(".") + 1);
            // 文件的上传路径
            String uploadPath = FastDfsUtil.upload(file.getBytes(), extName);
            System.out.println(uploadPath);
            // 要返回给前端文件上传路径，所以需要对AjaxResult进行更新
            return AjaxResult.getAjaxResult().setResultObj(uploadPath);
        } catch (IOException e) {
            e.printStackTrace();
            return AjaxResult.getAjaxResult()
                    .setSuccess(false)
                    .setMessage("上传失败，请稍后再试！！！");
        }
    }

    @DeleteMapping("/delete")
    public AjaxResult delete(@RequestParam("path") String path){
        try {
            // 这里需要组名(也就是group1)和文件名(后面部分),所以需要进行分割
            String tempPath = path.substring(1); // group1/......
            String groupName = tempPath.substring(0, tempPath.indexOf("/"));
            String fileName = tempPath.substring(tempPath.indexOf("/") + 1);
            FastDfsUtil.delete(groupName, fileName);
            System.out.println(groupName);
            System.out.println(fileName);
            return AjaxResult.getAjaxResult();
        } catch (Exception e) {
            e.printStackTrace();
            return AjaxResult.getAjaxResult()
                    .setSuccess(false)
                    .setMessage("删除失败，请稍后再试！！！");
        }
    }

}
